export default {
  getUrlKey: function (name) {
    return (
      decodeURIComponent(
        (new RegExp("[?|&]" + name + "=" + "([^&;]+?)(&|#|;|$)").exec(
          location.href
        ) || [, ""])[1].replace(/\+/g, "%20")
      ) || null
    );
  },

  /*
   * 时间戳转换字符串 格式化
   * */
  dateFormat(str) {
    let time = Number(str);
    if (time) {
      time = str.length >= 13 ? time : time * 1000;
      let date = new Date(time);
      let year, month, day, hour, min, sec;
      year = date.getFullYear();
      month = date.getMonth() + 1;
      day = date.getDate();
      hour = date.getHours();
      min = date.getMinutes();
      sec = date.getSeconds();
      return (
        "" + year + "-" + month + "-" + day + " " + hour + ":" + min + ":" + sec
      );
    } else {
      return str;
    }
  },

  /*
   * 判断手机系统
   * */
  isAndroidOrIOS() {
    let u = navigator.userAgent;
    let isAndroid = u.indexOf("Android") > -1 || u.indexOf("Adr") > -1; //android终端
    let isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
    return {
      ios: isIOS,
      android: isAndroid
    };
  },

  /*
   * 对象键值法去重
   * 速度最快， 占空间最多（空间换时间）
   *
   * 该方法执行的速度比其他任何方法都快， 就是占用的内存大一些。
   * 现思路：新建一js对象以及新数组，遍历传入数组时，判断值是否为js对象的键，
   * 不是的话给对象新增该键并放入新数组。
   * 注意点：判断是否为js对象键时，会自动对传入的键执行“toString()”，
   * 不同的键可能会被误认为一样，例如n[val]-- n[1]、n["1"]；
   * 解决上述问题还是得调用“indexOf”。
   * */
  uniqArray(array) {
    let temp = {},
      r = [],
      len = array.length,
      val,
      type;
    for (let i = 0; i < len; i++) {
      val = array[i];
      type = typeof val;
      if (!temp[val]) {
        temp[val] = [type];
        r.push(val);
      } else if (temp[val].indexOf(type) < 0) {
        temp[val].push(type);
        r.push(val);
      }
    }
    return r;
  },

  /*
   * 推荐的方法: 优化遍历数组法
   * 思路： 获取没重复的最右一值放入新数组
   *
   * 方法的实现代码相当酷炫，
   * 实现思路：获取没重复的最右一值放入新数组。
   * （检测到有重复值时终止当前循环同时进入顶层循环的下一轮判断）
   * */
  uniqArray2(array) {
    let temp = [];
    let index = [];
    let l = array.length;
    for (let i = 0; i < l; i++) {
      for (let j = i + 1; j < l; j++) {
        if (array[i] === array[j]) {
          i++;
          j = i;
        }
      }
      temp.push(array[i]);
      index.push(i);
    }
    //console.log(index);
    return temp;
  },

  arrayRemove(array, item) {
    if (array instanceof Array && item) {
      let index = 0
      array.forEach((i, idx) => {
        if (item == i) {
          index = idx;
        }
      })
      array.splice(index, 1)
    }
    return array
  }
};
